package pe.com.drokasa.android.client.service.impl;

import java.util.ArrayList;
import java.util.List;

import pe.com.drokasa.android.client.conexion.ConexionCliente;
import pe.com.drokasa.android.client.excepcion.ExcepcionInesperada;
import pe.com.drokasa.android.client.model.Sucursal;
import pe.com.drokasa.android.client.service.StockService;
import pe.com.drokasa.android.client.util.VariableAplicacion;
import pe.com.drokasa.mirror.datagram.helper.DatagramHelper;
import pe.com.drokasa.mirror.datagram.request.Transaction017Request;
import pe.com.drokasa.mirror.datagram.response.Transaction017Response;
import pe.com.drokasa.mirror.datagram.response.model.ResponseBean017;

/**
 * Implementaci&oacute;n que obtiene el stock de productos por sucursal, 
 * usando conexi&oacute;n via sockets hacia MIRROR.
 * 
 * @author Synopsis S.A
 *
 */
public class StockServiceSocket implements StockService 
{
	@Override
	public List<Sucursal> obtenerStockProducto(String codigoProducto) throws ExcepcionInesperada
	{
		Transaction017Request request = DatagramHelper.getTransaction017Request(VariableAplicacion.getCodigoAplicativo(), 
				VariableAplicacion.getCodigoTransaccion(), VariableAplicacion.getCodigoTipoDispositivo(), VariableAplicacion.getUsuario(), 
				VariableAplicacion.getPassword(), VariableAplicacion.getCodigoVendedor(), codigoProducto);
		
		String res = ConexionCliente.ejecutarOperacion(request.build());
		Transaction017Response response = DatagramHelper.getTransaction017Response(res);
		
		List<Sucursal> stockSucursales = new ArrayList<Sucursal>();
		
		if(response.getIndicadorStatus().equals("0"))
		{
			List<ResponseBean017> resultados = response.getData();
			
			for (ResponseBean017 bean : resultados) 
			{
				Sucursal sucursal = new Sucursal();
				sucursal.setCodigo(bean.getCodigoSucursal());
				sucursal.setNombre(bean.getNombreSucursal());
				sucursal.setSigno(bean.getSigno());
				sucursal.setStock(Integer.parseInt(bean.getStockMercaderia()));
				stockSucursales.add(sucursal);
			}		
		}
		
		return stockSucursales;
	}
}